1676D - X-Sum - CodeForces Solution


brute force greedy implementation *1000

Please click on ads to support us..

Python Code:

def diag_sum(grid, i, j):
    n, m = len(grid), len(grid[0])
    ans = grid[i][j]
    
    p, q = i+1, j+1
    while p<n and q<m:
        ans += grid[p][q]
        p,q = p+1, q+1

    p, q = i+1, j-1
    while p<n and q>=0:
        ans += grid[p][q]
        p,q = p+1, q-1

    p, q = i-1, j-1
    while p>=0 and q>=0:
        ans += grid[p][q]
        p,q = p-1, q-1

    p, q = i-1, j+1
    while p>=0 and q<m:
        ans += grid[p][q]
        p,q = p-1, q+1

    return ans

for _ in range(int(input())):
    n, m = map(int, input().split())
    grid = []
    for _ in range(n):
        grid.append(list(map(int, input().split())))
    
    ans = 0
    for i in range(len(grid)):
        for j in range(len(grid[0])):
            ans = max(ans, diag_sum(grid, i, j))
    
    print(ans)

C++ Code:

#include <bits/stdc++.h>
#define ll long long
#define test ll t;cin>>t;while(t--)
#define all(v) v.begin(),v.end()
#define len(x) (ll)x.size()
#define YES(x) cout<<(x?"YES":"NO")<<'\n';
#define Yes(x) cout<<(x?"Yes":"No")
#define yes(x) cout<<(x?"yes":"no")
#define odd(x) ((x&1))
#define even(x) !odd(x)
#define bsmallah ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
#define line cout<<'\n';
using namespace std;
int main(){
    test{
        ll n,m;cin>>n>>m;
        ll v[n][m];
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                cin>>v[i][j];
            }
        }
        ll curr=0,ans=0;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < m; ++j) {
                if(j==2&&i==2){
                    cout<<"";
                }
                curr=0;
                for (int k = 1; k < max(n,m); ++k) {
                    if(i+k<n){
                        if(j+k<m){
                            curr+=v[i+k][j+k];
                        }
                        if(j-k>=0){
                            curr+=v[i+k][j-k];
                        }
                    }
                    if(i-k>=0){
                        if(j+k<m){
                            curr+=v[i-k][j+k];
                        }
                        if(j-k>=0){
                            curr+=v[i-k][j-k];
                        }
                    }
                }
                curr+=v[i][j];
                ans=max(curr,ans);

            }
        }
        cout<<ans<<'\n';
    }
}


Comments

Submit
0 Comments
More Questions

415. Add Strings
22. Generate Parentheses
13. Roman to Integer
2. Add Two Numbers
515. Find Largest Value in Each Tree Row
345. Reverse Vowels of a String
628. Maximum Product of Three Numbers
1526A - Mean Inequality
1526B - I Hate 1111
1881. Maximum Value after Insertion
237. Delete Node in a Linked List
27. Remove Element
39. Combination Sum
378. Kth Smallest Element in a Sorted Matrix
162. Find Peak Element
1529A - Eshag Loves Big Arrays
19. Remove Nth Node From End of List
925. Long Pressed Name
1051. Height Checker
695. Max Area of Island
402. Remove K Digits
97. Interleaving String
543. Diameter of Binary Tree
124. Binary Tree Maximum Path Sum
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts
501A - Contest
160A- Twins
752. Open the Lock
1535A - Fair Playoff
1538F - Interesting Function